﻿using System.Collections.Generic;
using StructureMap;
using TimeTracker.Core.DataAccess;
using TimeTracker.Core.Domain.Entities;
using TimeTracker.Web.Admin.Interface;

namespace TimeTracker.Web.Admin.Presenter
{
    public class RadniciPresenter
    {
        private IRadniciView _view;
        private IRadnikRepository _radnikRepository;
        private IOrganizacionaSemaRepository _organizacioneSemeRepository;
        private IList<Radnik> _radnici;
        private IList<OrganizacionaSema> _seme;

        public void Init(IRadniciView view)
        {
            _view = view;
            _radnikRepository = ObjectFactory.GetInstance<IRadnikRepository>();
            _organizacioneSemeRepository = ObjectFactory.GetInstance<IOrganizacionaSemaRepository>();
        }

        public void Init(IRadniciView view, string command)
        {
            if (command == "OrganizacioneSeme")
            {
                _seme = _organizacioneSemeRepository.UzmiSveOrganizacioneSeme();
                UcitajOrganizacioneSeme();
            }
            
            if (command != "Radnici") return;

            _radnici = _radnikRepository.UzmiSveRadnike();
            UcitajRadnike();
        }

        public void Init(IRadniciView view, string command, int radnikId)
        {
            if (command == "OrganizacioneSeme")
            {
                _seme = _organizacioneSemeRepository.UzmiSveOrganizacioneSeme();
                var radnik = _radnikRepository.UzmiRadnikaPoId(radnikId);
                UcitajOrganizacioneSeme(radnik.OrganizacionaSema.OrganizacionaSemaId);
            }
        }

        public void UcitajRadnike()
        {
            _view.PokaziRadnike(_radnici);
        }

        public void UcitajOrganizacioneSeme()
        {
            _view.PokaziOrganizacioneSeme(_seme);
        }

        private void UcitajOrganizacioneSeme(int organizacionaSemaId)
        {
            _view.PokaziOrganizacioneSeme(_seme, organizacionaSemaId);
        }

        public void DodajRadnika(string ime, string prezime, string email, int orgSemaId)
        {
            _radnikRepository.DodajRadnika(ime, prezime, email, orgSemaId);
        }

        public void ObrisiRadnika(int radnikId)
        {
            _radnikRepository.ObrisiRadnika(radnikId);
        }

        public void AzurirajRadnika(int radnikId, string ime, string prezime, string email, int orgSemaId)
        {
            _radnikRepository.AzurirajRadnika(radnikId, ime, prezime, email, orgSemaId);
        }
    }
}
